// $ANTLR 3.4 C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g 2012-10-17 18:48:39

  package practica5;


import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings({"all", "warnings", "unchecked"})
public class Sintactico extends Parser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "AND", "ASTERISCO", "BLANCO", "CADENA", "CHAR", "COMA", "COMENTARIO", "COMENTARIO_A", "COMENTARIO_C", "COMILLAS", "CORCHETES", "CORCHETE_A", "CORCHETE_C", "DECREMENTO", "DIGITO", "GUION", "IDENT", "IGUAL", "INCREMENTO", "INT", "LETRA", "LLAVE_A", "LLAVE_C", "MAIN", "NUEVOBLOQUE", "NUMERO", "OR", "PARENTESIS_A", "PARENTESIS_C", "PORCENTAJE", "PRINTF", "PUNTO", "PUNTO_COMA", "RANGO", "RET", "SUMA", "VOID"
    };

    public static final int EOF=-1;
    public static final int AND=4;
    public static final int ASTERISCO=5;
    public static final int BLANCO=6;
    public static final int CADENA=7;
    public static final int CHAR=8;
    public static final int COMA=9;
    public static final int COMENTARIO=10;
    public static final int COMENTARIO_A=11;
    public static final int COMENTARIO_C=12;
    public static final int COMILLAS=13;
    public static final int CORCHETES=14;
    public static final int CORCHETE_A=15;
    public static final int CORCHETE_C=16;
    public static final int DECREMENTO=17;
    public static final int DIGITO=18;
    public static final int GUION=19;
    public static final int IDENT=20;
    public static final int IGUAL=21;
    public static final int INCREMENTO=22;
    public static final int INT=23;
    public static final int LETRA=24;
    public static final int LLAVE_A=25;
    public static final int LLAVE_C=26;
    public static final int MAIN=27;
    public static final int NUEVOBLOQUE=28;
    public static final int NUMERO=29;
    public static final int OR=30;
    public static final int PARENTESIS_A=31;
    public static final int PARENTESIS_C=32;
    public static final int PORCENTAJE=33;
    public static final int PRINTF=34;
    public static final int PUNTO=35;
    public static final int PUNTO_COMA=36;
    public static final int RANGO=37;
    public static final int RET=38;
    public static final int SUMA=39;
    public static final int VOID=40;

    // delegates
    public Parser[] getDelegates() {
        return new Parser[] {};
    }

    // delegators


    public Sintactico(TokenStream input) {
        this(input, new RecognizerSharedState());
    }
    public Sintactico(TokenStream input, RecognizerSharedState state) {
        super(input, state);
    }

    public String[] getTokenNames() { return Sintactico.tokenNames; }
    public String getGrammarFileName() { return "C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g"; }


         private ArrayList<RecognitionException> errors = new ArrayList<RecognitionException>();
         public ArrayList<RecognitionException> getErrors() {
            return errors;
         }
         @Override
         public void reportError (RecognitionException e) {
            String msg = getErrorMessage(e, getTokenNames());
            System.err.println(msg);
            errors.add(e);
         }



    // $ANTLR start "entrada"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:27:1: entrada : ( primerbloque segundobloque ( tercerbloque )? ) ;
    public final void entrada() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:27:8: ( ( primerbloque segundobloque ( tercerbloque )? ) )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:27:10: ( primerbloque segundobloque ( tercerbloque )? )
            {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:27:10: ( primerbloque segundobloque ( tercerbloque )? )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:27:11: primerbloque segundobloque ( tercerbloque )?
            {
            pushFollow(FOLLOW_primerbloque_in_entrada49);
            primerbloque();

            state._fsp--;


            pushFollow(FOLLOW_segundobloque_in_entrada51);
            segundobloque();

            state._fsp--;


            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:27:38: ( tercerbloque )?
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( (LA1_0==NUEVOBLOQUE) ) {
                alt1=1;
            }
            switch (alt1) {
                case 1 :
                    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:27:38: tercerbloque
                    {
                    pushFollow(FOLLOW_tercerbloque_in_entrada53);
                    tercerbloque();

                    state._fsp--;


                    }
                    break;

            }


            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "entrada"



    // $ANTLR start "primerbloque"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:29:1: primerbloque : macros macros declaracion ;
    public final void primerbloque() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:29:13: ( macros macros declaracion )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:29:15: macros macros declaracion
            {
            pushFollow(FOLLOW_macros_in_primerbloque62);
            macros();

            state._fsp--;


            pushFollow(FOLLOW_macros_in_primerbloque64);
            macros();

            state._fsp--;


            pushFollow(FOLLOW_declaracion_in_primerbloque66);
            declaracion();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "primerbloque"



    // $ANTLR start "segundobloque"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:31:1: segundobloque : NUEVOBLOQUE regla1 regla2 ;
    public final void segundobloque() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:31:14: ( NUEVOBLOQUE regla1 regla2 )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:31:16: NUEVOBLOQUE regla1 regla2
            {
            match(input,NUEVOBLOQUE,FOLLOW_NUEVOBLOQUE_in_segundobloque73); 

            pushFollow(FOLLOW_regla1_in_segundobloque75);
            regla1();

            state._fsp--;


            pushFollow(FOLLOW_regla2_in_segundobloque77);
            regla2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "segundobloque"



    // $ANTLR start "tercerbloque"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:33:1: tercerbloque : NUEVOBLOQUE funcion principal ;
    public final void tercerbloque() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:33:13: ( NUEVOBLOQUE funcion principal )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:33:15: NUEVOBLOQUE funcion principal
            {
            match(input,NUEVOBLOQUE,FOLLOW_NUEVOBLOQUE_in_tercerbloque84); 

            pushFollow(FOLLOW_funcion_in_tercerbloque86);
            funcion();

            state._fsp--;


            pushFollow(FOLLOW_principal_in_tercerbloque88);
            principal();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "tercerbloque"



    // $ANTLR start "tipo"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:35:1: tipo : ( INT | CHAR | VOID );
    public final void tipo() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:35:5: ( INT | CHAR | VOID )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:
            {
            if ( input.LA(1)==CHAR||input.LA(1)==INT||input.LA(1)==VOID ) {
                input.consume();
                state.errorRecovery=false;
            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                throw mse;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "tipo"



    // $ANTLR start "macros"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:40:1: macros : IDENT CORCHETES ;
    public final void macros() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:40:7: ( IDENT CORCHETES )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:40:9: IDENT CORCHETES
            {
            match(input,IDENT,FOLLOW_IDENT_in_macros109); 

            match(input,CORCHETES,FOLLOW_CORCHETES_in_macros111); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "macros"



    // $ANTLR start "declaracion"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:41:1: declaracion : PORCENTAJE LLAVE_A variable variable PORCENTAJE LLAVE_C ;
    public final void declaracion() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:41:12: ( PORCENTAJE LLAVE_A variable variable PORCENTAJE LLAVE_C )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:41:14: PORCENTAJE LLAVE_A variable variable PORCENTAJE LLAVE_C
            {
            match(input,PORCENTAJE,FOLLOW_PORCENTAJE_in_declaracion117); 

            match(input,LLAVE_A,FOLLOW_LLAVE_A_in_declaracion119); 

            pushFollow(FOLLOW_variable_in_declaracion134);
            variable();

            state._fsp--;


            pushFollow(FOLLOW_variable_in_declaracion149);
            variable();

            state._fsp--;


            match(input,PORCENTAJE,FOLLOW_PORCENTAJE_in_declaracion164); 

            match(input,LLAVE_C,FOLLOW_LLAVE_C_in_declaracion166); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "declaracion"



    // $ANTLR start "variable"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:45:1: variable : tipo IDENT PUNTO_COMA ;
    public final void variable() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:45:9: ( tipo IDENT PUNTO_COMA )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:45:11: tipo IDENT PUNTO_COMA
            {
            pushFollow(FOLLOW_tipo_in_variable172);
            tipo();

            state._fsp--;


            match(input,IDENT,FOLLOW_IDENT_in_variable174); 

            match(input,PUNTO_COMA,FOLLOW_PUNTO_COMA_in_variable176); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "variable"



    // $ANTLR start "regla1"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:52:1: regla1 : patron1 accion PUNTO_COMA ;
    public final void regla1() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:52:7: ( patron1 accion PUNTO_COMA )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:52:9: patron1 accion PUNTO_COMA
            {
            pushFollow(FOLLOW_patron1_in_regla1188);
            patron1();

            state._fsp--;


            pushFollow(FOLLOW_accion_in_regla1190);
            accion();

            state._fsp--;


            match(input,PUNTO_COMA,FOLLOW_PUNTO_COMA_in_regla1192); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "regla1"



    // $ANTLR start "patron1"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:53:1: patron1 : LLAVE_A IDENT LLAVE_C PARENTESIS_A LLAVE_A IDENT LLAVE_C OR LLAVE_A IDENT LLAVE_C PARENTESIS_C ASTERISCO ;
    public final void patron1() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:53:8: ( LLAVE_A IDENT LLAVE_C PARENTESIS_A LLAVE_A IDENT LLAVE_C OR LLAVE_A IDENT LLAVE_C PARENTESIS_C ASTERISCO )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:53:10: LLAVE_A IDENT LLAVE_C PARENTESIS_A LLAVE_A IDENT LLAVE_C OR LLAVE_A IDENT LLAVE_C PARENTESIS_C ASTERISCO
            {
            match(input,LLAVE_A,FOLLOW_LLAVE_A_in_patron1198); 

            match(input,IDENT,FOLLOW_IDENT_in_patron1200); 

            match(input,LLAVE_C,FOLLOW_LLAVE_C_in_patron1202); 

            match(input,PARENTESIS_A,FOLLOW_PARENTESIS_A_in_patron1204); 

            match(input,LLAVE_A,FOLLOW_LLAVE_A_in_patron1206); 

            match(input,IDENT,FOLLOW_IDENT_in_patron1208); 

            match(input,LLAVE_C,FOLLOW_LLAVE_C_in_patron1210); 

            match(input,OR,FOLLOW_OR_in_patron1212); 

            match(input,LLAVE_A,FOLLOW_LLAVE_A_in_patron1214); 

            match(input,IDENT,FOLLOW_IDENT_in_patron1216); 

            match(input,LLAVE_C,FOLLOW_LLAVE_C_in_patron1218); 

            match(input,PARENTESIS_C,FOLLOW_PARENTESIS_C_in_patron1220); 

            match(input,ASTERISCO,FOLLOW_ASTERISCO_in_patron1222); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "patron1"



    // $ANTLR start "regla2"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:54:1: regla2 : patron2 accion PUNTO_COMA ;
    public final void regla2() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:54:7: ( patron2 accion PUNTO_COMA )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:54:9: patron2 accion PUNTO_COMA
            {
            pushFollow(FOLLOW_patron2_in_regla2228);
            patron2();

            state._fsp--;


            pushFollow(FOLLOW_accion_in_regla2230);
            accion();

            state._fsp--;


            match(input,PUNTO_COMA,FOLLOW_PUNTO_COMA_in_regla2232); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "regla2"



    // $ANTLR start "patron2"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:55:1: patron2 : LLAVE_A IDENT LLAVE_C SUMA ;
    public final void patron2() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:55:8: ( LLAVE_A IDENT LLAVE_C SUMA )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:55:10: LLAVE_A IDENT LLAVE_C SUMA
            {
            match(input,LLAVE_A,FOLLOW_LLAVE_A_in_patron2238); 

            match(input,IDENT,FOLLOW_IDENT_in_patron2240); 

            match(input,LLAVE_C,FOLLOW_LLAVE_C_in_patron2242); 

            match(input,SUMA,FOLLOW_SUMA_in_patron2244); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "patron2"



    // $ANTLR start "accion"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:56:1: accion : IDENT ( INCREMENTO ) ;
    public final void accion() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:56:7: ( IDENT ( INCREMENTO ) )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:56:9: IDENT ( INCREMENTO )
            {
            match(input,IDENT,FOLLOW_IDENT_in_accion250); 

            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:56:15: ( INCREMENTO )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:56:16: INCREMENTO
            {
            match(input,INCREMENTO,FOLLOW_INCREMENTO_in_accion253); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "accion"



    // $ANTLR start "funcion"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:63:1: funcion : tipo IDENT PARENTESIS_A VOID PARENTESIS_C LLAVE_A cuerpo_funcion LLAVE_C ;
    public final void funcion() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:63:8: ( tipo IDENT PARENTESIS_A VOID PARENTESIS_C LLAVE_A cuerpo_funcion LLAVE_C )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:63:10: tipo IDENT PARENTESIS_A VOID PARENTESIS_C LLAVE_A cuerpo_funcion LLAVE_C
            {
            pushFollow(FOLLOW_tipo_in_funcion266);
            tipo();

            state._fsp--;


            match(input,IDENT,FOLLOW_IDENT_in_funcion268); 

            match(input,PARENTESIS_A,FOLLOW_PARENTESIS_A_in_funcion270); 

            match(input,VOID,FOLLOW_VOID_in_funcion272); 

            match(input,PARENTESIS_C,FOLLOW_PARENTESIS_C_in_funcion274); 

            match(input,LLAVE_A,FOLLOW_LLAVE_A_in_funcion276); 

            pushFollow(FOLLOW_cuerpo_funcion_in_funcion278);
            cuerpo_funcion();

            state._fsp--;


            match(input,LLAVE_C,FOLLOW_LLAVE_C_in_funcion280); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "funcion"



    // $ANTLR start "cuerpo_funcion"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:64:1: cuerpo_funcion : ret ;
    public final void cuerpo_funcion() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:64:15: ( ret )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:64:17: ret
            {
            pushFollow(FOLLOW_ret_in_cuerpo_funcion286);
            ret();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "cuerpo_funcion"



    // $ANTLR start "principal"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:66:1: principal : tipo MAIN PARENTESIS_A parametros PARENTESIS_C LLAVE_A cuerpo_main LLAVE_C ;
    public final void principal() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:66:10: ( tipo MAIN PARENTESIS_A parametros PARENTESIS_C LLAVE_A cuerpo_main LLAVE_C )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:66:12: tipo MAIN PARENTESIS_A parametros PARENTESIS_C LLAVE_A cuerpo_main LLAVE_C
            {
            pushFollow(FOLLOW_tipo_in_principal293);
            tipo();

            state._fsp--;


            match(input,MAIN,FOLLOW_MAIN_in_principal295); 

            match(input,PARENTESIS_A,FOLLOW_PARENTESIS_A_in_principal297); 

            pushFollow(FOLLOW_parametros_in_principal299);
            parametros();

            state._fsp--;


            match(input,PARENTESIS_C,FOLLOW_PARENTESIS_C_in_principal301); 

            match(input,LLAVE_A,FOLLOW_LLAVE_A_in_principal303); 

            pushFollow(FOLLOW_cuerpo_main_in_principal305);
            cuerpo_main();

            state._fsp--;


            match(input,LLAVE_C,FOLLOW_LLAVE_C_in_principal307); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "principal"



    // $ANTLR start "parametros"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:68:1: parametros : par1 COMA par2 ;
    public final void parametros() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:68:11: ( par1 COMA par2 )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:68:13: par1 COMA par2
            {
            pushFollow(FOLLOW_par1_in_parametros314);
            par1();

            state._fsp--;


            match(input,COMA,FOLLOW_COMA_in_parametros316); 

            pushFollow(FOLLOW_par2_in_parametros318);
            par2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "parametros"



    // $ANTLR start "par1"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:69:1: par1 : tipo IDENT ;
    public final void par1() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:69:5: ( tipo IDENT )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:69:7: tipo IDENT
            {
            pushFollow(FOLLOW_tipo_in_par1324);
            tipo();

            state._fsp--;


            match(input,IDENT,FOLLOW_IDENT_in_par1326); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "par1"



    // $ANTLR start "par2"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:70:1: par2 : tipo ASTERISCO IDENT CORCHETES ;
    public final void par2() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:70:5: ( tipo ASTERISCO IDENT CORCHETES )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:70:7: tipo ASTERISCO IDENT CORCHETES
            {
            pushFollow(FOLLOW_tipo_in_par2332);
            tipo();

            state._fsp--;


            match(input,ASTERISCO,FOLLOW_ASTERISCO_in_par2334); 

            match(input,IDENT,FOLLOW_IDENT_in_par2336); 

            match(input,CORCHETES,FOLLOW_CORCHETES_in_par2338); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "par2"



    // $ANTLR start "cuerpo_main"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:72:1: cuerpo_main : asignacion_funcion asignacion_valor asignacion_valor llamada_funcion llamada_funcion imprimir imprimir ret ;
    public final void cuerpo_main() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:72:12: ( asignacion_funcion asignacion_valor asignacion_valor llamada_funcion llamada_funcion imprimir imprimir ret )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:72:14: asignacion_funcion asignacion_valor asignacion_valor llamada_funcion llamada_funcion imprimir imprimir ret
            {
            pushFollow(FOLLOW_asignacion_funcion_in_cuerpo_main345);
            asignacion_funcion();

            state._fsp--;


            pushFollow(FOLLOW_asignacion_valor_in_cuerpo_main347);
            asignacion_valor();

            state._fsp--;


            pushFollow(FOLLOW_asignacion_valor_in_cuerpo_main349);
            asignacion_valor();

            state._fsp--;


            pushFollow(FOLLOW_llamada_funcion_in_cuerpo_main351);
            llamada_funcion();

            state._fsp--;


            pushFollow(FOLLOW_llamada_funcion_in_cuerpo_main353);
            llamada_funcion();

            state._fsp--;


            pushFollow(FOLLOW_imprimir_in_cuerpo_main355);
            imprimir();

            state._fsp--;


            pushFollow(FOLLOW_imprimir_in_cuerpo_main357);
            imprimir();

            state._fsp--;


            pushFollow(FOLLOW_ret_in_cuerpo_main359);
            ret();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "cuerpo_main"



    // $ANTLR start "asignacion_funcion"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:74:1: asignacion_funcion : IDENT IGUAL IDENT PARENTESIS_A params PARENTESIS_C PUNTO_COMA ;
    public final void asignacion_funcion() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:74:19: ( IDENT IGUAL IDENT PARENTESIS_A params PARENTESIS_C PUNTO_COMA )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:74:21: IDENT IGUAL IDENT PARENTESIS_A params PARENTESIS_C PUNTO_COMA
            {
            match(input,IDENT,FOLLOW_IDENT_in_asignacion_funcion366); 

            match(input,IGUAL,FOLLOW_IGUAL_in_asignacion_funcion368); 

            match(input,IDENT,FOLLOW_IDENT_in_asignacion_funcion370); 

            match(input,PARENTESIS_A,FOLLOW_PARENTESIS_A_in_asignacion_funcion372); 

            pushFollow(FOLLOW_params_in_asignacion_funcion374);
            params();

            state._fsp--;


            match(input,PARENTESIS_C,FOLLOW_PARENTESIS_C_in_asignacion_funcion376); 

            match(input,PUNTO_COMA,FOLLOW_PUNTO_COMA_in_asignacion_funcion378); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "asignacion_funcion"



    // $ANTLR start "params"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:75:1: params : param1 COMA param2 ;
    public final void params() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:75:7: ( param1 COMA param2 )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:75:9: param1 COMA param2
            {
            pushFollow(FOLLOW_param1_in_params384);
            param1();

            state._fsp--;


            match(input,COMA,FOLLOW_COMA_in_params386); 

            pushFollow(FOLLOW_param2_in_params388);
            param2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "params"



    // $ANTLR start "param1"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:76:1: param1 : IDENT CORCHETES ;
    public final void param1() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:76:7: ( IDENT CORCHETES )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:76:9: IDENT CORCHETES
            {
            match(input,IDENT,FOLLOW_IDENT_in_param1394); 

            match(input,CORCHETES,FOLLOW_CORCHETES_in_param1396); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "param1"



    // $ANTLR start "param2"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:77:1: param2 : CADENA ;
    public final void param2() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:77:7: ( CADENA )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:77:9: CADENA
            {
            match(input,CADENA,FOLLOW_CADENA_in_param2402); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "param2"



    // $ANTLR start "asignacion_valor"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:79:1: asignacion_valor : IDENT IGUAL NUMERO PUNTO_COMA ;
    public final void asignacion_valor() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:79:17: ( IDENT IGUAL NUMERO PUNTO_COMA )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:79:19: IDENT IGUAL NUMERO PUNTO_COMA
            {
            match(input,IDENT,FOLLOW_IDENT_in_asignacion_valor409); 

            match(input,IGUAL,FOLLOW_IGUAL_in_asignacion_valor411); 

            match(input,NUMERO,FOLLOW_NUMERO_in_asignacion_valor413); 

            match(input,PUNTO_COMA,FOLLOW_PUNTO_COMA_in_asignacion_valor415); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "asignacion_valor"



    // $ANTLR start "llamada_funcion"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:80:1: llamada_funcion : IDENT PARENTESIS_A ( IDENT )? PARENTESIS_C PUNTO_COMA ;
    public final void llamada_funcion() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:80:16: ( IDENT PARENTESIS_A ( IDENT )? PARENTESIS_C PUNTO_COMA )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:80:18: IDENT PARENTESIS_A ( IDENT )? PARENTESIS_C PUNTO_COMA
            {
            match(input,IDENT,FOLLOW_IDENT_in_llamada_funcion421); 

            match(input,PARENTESIS_A,FOLLOW_PARENTESIS_A_in_llamada_funcion423); 

            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:80:37: ( IDENT )?
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==IDENT) ) {
                alt2=1;
            }
            switch (alt2) {
                case 1 :
                    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:80:37: IDENT
                    {
                    match(input,IDENT,FOLLOW_IDENT_in_llamada_funcion425); 

                    }
                    break;

            }


            match(input,PARENTESIS_C,FOLLOW_PARENTESIS_C_in_llamada_funcion428); 

            match(input,PUNTO_COMA,FOLLOW_PUNTO_COMA_in_llamada_funcion430); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "llamada_funcion"



    // $ANTLR start "imprimir"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:81:1: imprimir : PRINTF PARENTESIS_A CADENA COMA IDENT PARENTESIS_C PUNTO_COMA ;
    public final void imprimir() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:81:9: ( PRINTF PARENTESIS_A CADENA COMA IDENT PARENTESIS_C PUNTO_COMA )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:81:11: PRINTF PARENTESIS_A CADENA COMA IDENT PARENTESIS_C PUNTO_COMA
            {
            match(input,PRINTF,FOLLOW_PRINTF_in_imprimir436); 

            match(input,PARENTESIS_A,FOLLOW_PARENTESIS_A_in_imprimir438); 

            match(input,CADENA,FOLLOW_CADENA_in_imprimir440); 

            match(input,COMA,FOLLOW_COMA_in_imprimir442); 

            match(input,IDENT,FOLLOW_IDENT_in_imprimir444); 

            match(input,PARENTESIS_C,FOLLOW_PARENTESIS_C_in_imprimir446); 

            match(input,PUNTO_COMA,FOLLOW_PUNTO_COMA_in_imprimir448); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "imprimir"



    // $ANTLR start "ret"
    // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:83:1: ret : RET NUMERO PUNTO_COMA ;
    public final void ret() throws RecognitionException {
        try {
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:83:4: ( RET NUMERO PUNTO_COMA )
            // C:\\Users\\usuario\\workspace\\Practica5-PL\\src\\main\\java\\practica5\\Sintactico.g:83:6: RET NUMERO PUNTO_COMA
            {
            match(input,RET,FOLLOW_RET_in_ret455); 

            match(input,NUMERO,FOLLOW_NUMERO_in_ret457); 

            match(input,PUNTO_COMA,FOLLOW_PUNTO_COMA_in_ret459); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return ;
    }
    // $ANTLR end "ret"

    // Delegated rules


 

    public static final BitSet FOLLOW_primerbloque_in_entrada49 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_segundobloque_in_entrada51 = new BitSet(new long[]{0x0000000010000002L});
    public static final BitSet FOLLOW_tercerbloque_in_entrada53 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_macros_in_primerbloque62 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_macros_in_primerbloque64 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_declaracion_in_primerbloque66 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NUEVOBLOQUE_in_segundobloque73 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_regla1_in_segundobloque75 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_regla2_in_segundobloque77 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NUEVOBLOQUE_in_tercerbloque84 = new BitSet(new long[]{0x0000010000800100L});
    public static final BitSet FOLLOW_funcion_in_tercerbloque86 = new BitSet(new long[]{0x0000010000800100L});
    public static final BitSet FOLLOW_principal_in_tercerbloque88 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_macros109 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_CORCHETES_in_macros111 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PORCENTAJE_in_declaracion117 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_LLAVE_A_in_declaracion119 = new BitSet(new long[]{0x0000010000800100L});
    public static final BitSet FOLLOW_variable_in_declaracion134 = new BitSet(new long[]{0x0000010000800100L});
    public static final BitSet FOLLOW_variable_in_declaracion149 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_PORCENTAJE_in_declaracion164 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_LLAVE_C_in_declaracion166 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_tipo_in_variable172 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_IDENT_in_variable174 = new BitSet(new long[]{0x0000001000000000L});
    public static final BitSet FOLLOW_PUNTO_COMA_in_variable176 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_patron1_in_regla1188 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_accion_in_regla1190 = new BitSet(new long[]{0x0000001000000000L});
    public static final BitSet FOLLOW_PUNTO_COMA_in_regla1192 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LLAVE_A_in_patron1198 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_IDENT_in_patron1200 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_LLAVE_C_in_patron1202 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_PARENTESIS_A_in_patron1204 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_LLAVE_A_in_patron1206 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_IDENT_in_patron1208 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_LLAVE_C_in_patron1210 = new BitSet(new long[]{0x0000000040000000L});
    public static final BitSet FOLLOW_OR_in_patron1212 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_LLAVE_A_in_patron1214 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_IDENT_in_patron1216 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_LLAVE_C_in_patron1218 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_PARENTESIS_C_in_patron1220 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ASTERISCO_in_patron1222 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_patron2_in_regla2228 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_accion_in_regla2230 = new BitSet(new long[]{0x0000001000000000L});
    public static final BitSet FOLLOW_PUNTO_COMA_in_regla2232 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LLAVE_A_in_patron2238 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_IDENT_in_patron2240 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_LLAVE_C_in_patron2242 = new BitSet(new long[]{0x0000008000000000L});
    public static final BitSet FOLLOW_SUMA_in_patron2244 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_accion250 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_INCREMENTO_in_accion253 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_tipo_in_funcion266 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_IDENT_in_funcion268 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_PARENTESIS_A_in_funcion270 = new BitSet(new long[]{0x0000010000000000L});
    public static final BitSet FOLLOW_VOID_in_funcion272 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_PARENTESIS_C_in_funcion274 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_LLAVE_A_in_funcion276 = new BitSet(new long[]{0x0000004000000000L});
    public static final BitSet FOLLOW_cuerpo_funcion_in_funcion278 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_LLAVE_C_in_funcion280 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ret_in_cuerpo_funcion286 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_tipo_in_principal293 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_MAIN_in_principal295 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_PARENTESIS_A_in_principal297 = new BitSet(new long[]{0x0000010000800100L});
    public static final BitSet FOLLOW_parametros_in_principal299 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_PARENTESIS_C_in_principal301 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_LLAVE_A_in_principal303 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_cuerpo_main_in_principal305 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_LLAVE_C_in_principal307 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_par1_in_parametros314 = new BitSet(new long[]{0x0000000000000200L});
    public static final BitSet FOLLOW_COMA_in_parametros316 = new BitSet(new long[]{0x0000010000800100L});
    public static final BitSet FOLLOW_par2_in_parametros318 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_tipo_in_par1324 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_IDENT_in_par1326 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_tipo_in_par2332 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ASTERISCO_in_par2334 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_IDENT_in_par2336 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_CORCHETES_in_par2338 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_asignacion_funcion_in_cuerpo_main345 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_asignacion_valor_in_cuerpo_main347 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_asignacion_valor_in_cuerpo_main349 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_llamada_funcion_in_cuerpo_main351 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_llamada_funcion_in_cuerpo_main353 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_imprimir_in_cuerpo_main355 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_imprimir_in_cuerpo_main357 = new BitSet(new long[]{0x0000004000000000L});
    public static final BitSet FOLLOW_ret_in_cuerpo_main359 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_asignacion_funcion366 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_IGUAL_in_asignacion_funcion368 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_IDENT_in_asignacion_funcion370 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_PARENTESIS_A_in_asignacion_funcion372 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_params_in_asignacion_funcion374 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_PARENTESIS_C_in_asignacion_funcion376 = new BitSet(new long[]{0x0000001000000000L});
    public static final BitSet FOLLOW_PUNTO_COMA_in_asignacion_funcion378 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_param1_in_params384 = new BitSet(new long[]{0x0000000000000200L});
    public static final BitSet FOLLOW_COMA_in_params386 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_param2_in_params388 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_param1394 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_CORCHETES_in_param1396 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CADENA_in_param2402 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_asignacion_valor409 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_IGUAL_in_asignacion_valor411 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_NUMERO_in_asignacion_valor413 = new BitSet(new long[]{0x0000001000000000L});
    public static final BitSet FOLLOW_PUNTO_COMA_in_asignacion_valor415 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_llamada_funcion421 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_PARENTESIS_A_in_llamada_funcion423 = new BitSet(new long[]{0x0000000100100000L});
    public static final BitSet FOLLOW_IDENT_in_llamada_funcion425 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_PARENTESIS_C_in_llamada_funcion428 = new BitSet(new long[]{0x0000001000000000L});
    public static final BitSet FOLLOW_PUNTO_COMA_in_llamada_funcion430 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PRINTF_in_imprimir436 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_PARENTESIS_A_in_imprimir438 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_CADENA_in_imprimir440 = new BitSet(new long[]{0x0000000000000200L});
    public static final BitSet FOLLOW_COMA_in_imprimir442 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_IDENT_in_imprimir444 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_PARENTESIS_C_in_imprimir446 = new BitSet(new long[]{0x0000001000000000L});
    public static final BitSet FOLLOW_PUNTO_COMA_in_imprimir448 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RET_in_ret455 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_NUMERO_in_ret457 = new BitSet(new long[]{0x0000001000000000L});
    public static final BitSet FOLLOW_PUNTO_COMA_in_ret459 = new BitSet(new long[]{0x0000000000000002L});

}